function analizarHumedadYSugerir() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const hojaUsuarios = ss.getSheetByName("datos usuarios");
  const hojaDatos = ss.getSheetByName("Hoja 1");


  const usuarios = hojaUsuarios.getDataRange().getValues();
  const datos = hojaDatos.getDataRange().getValues();

  const encabezadoUsuarios = usuarios[0];
  const encabezadoDatos = datos[0];

  const idxNombre = encabezadoDatos.indexOf("nombre");
  const idxFecha = encabezadoDatos.indexOf("fecha-hora");
  const idxHumedad = encabezadoDatos.indexOf("Humedad %");

  const hace7dias = new Date();
  hace7dias.setDate(hace7dias.getDate() - 7);

  for (let i = 1; i < usuarios.length; i++) {
    const nombreSensor = usuarios[i][0];
    const seudonimo = usuarios[i][1];
    const correos = usuarios[i][2];
    const limiteConfort = parseFloat(usuarios[i][3]);
    const limiteExceso = parseFloat(usuarios[i][4]);
    const url = usuarios[i][5];

    if (isNaN(limiteConfort) || isNaN(limiteExceso)) continue;

    const datosSensor = datos.slice(1).filter(fila => {
      const fecha = new Date(fila[idxFecha]);
      return fila[idxNombre] === nombreSensor && fecha >= hace7dias;
    });

    if (datosSensor.length === 0) continue;

    let riesgo = 0, confort = 0, exceso = 0;

    datosSensor.forEach(fila => {
      const humedad = parseFloat(fila[idxHumedad]);
      if (humedad < limiteConfort) riesgo++;
      else if (humedad > limiteExceso) exceso++;
      else confort++;
    });

    const total = riesgo + confort + exceso;
    const pr = (x) => ((x / total) * 100).toFixed(1);

    let recomendacion = "Mantener riego";
    if (riesgo > exceso && riesgo > confort) recomendacion = "Aumentar riego";
    else if (exceso > riesgo && exceso > confort) recomendacion = "Reducir riego";


    // Email
    const asunto = `Informe semanal humedad - ${seudonimo}`;
    const cuerpo = `
<div style="font-family: Arial, sans-serif; color: #333;">
  <h2 style="color: #2E8B57;">🌿 Informe Semanal de Humedad - ${seudonimo}</h2>
  <p>Hola,</p>
  <p>A continuación te presentamos el análisis de humedad para la zona <strong>${seudonimo}</strong> correspondiente a los últimos 7 días:</p>

  <table style="border-collapse: collapse; width: 100%; margin-top: 10px;">
    <thead>
      <tr style="background-color: #f2f2f2;">
        <th style="border: 1px solid #ccc; padding: 8px;">Categoría</th>
        <th style="border: 1px solid #ccc; padding: 8px;">% del tiempo</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td style="border: 1px solid #ccc; padding: 8px;">🔴 Riesgo (bajo ${limiteConfort}%)</td>
        <td style="border: 1px solid #ccc; padding: 8px;">${pr(riesgo)}%</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ccc; padding: 8px;">🟢 Confort (${limiteConfort}% - ${limiteExceso}%)</td>
        <td style="border: 1px solid #ccc; padding: 8px;">${pr(confort)}%</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ccc; padding: 8px;">🔵 Exceso (más de ${limiteExceso}%)</td>
        <td style="border: 1px solid #ccc; padding: 8px;">${pr(exceso)}%</td>
      </tr>
    </tbody>
  </table>

  <p style="margin-top: 15px;"><strong>💡 Recomendación:</strong> <span style="color: #2E8B57;">${recomendacion}</span></p>

  <p>Puedes ver más detalles y gráficas aquí: <a href="${url}" style="color: #1E90FF;">Acceso al informe</a></p>

  <p style="margin-top: 20px;">Saludos automáticos,<br><em>Sistema de monitoreo automático de los pilotos de CICYTEX para TECH4E</em></p>
</div>
`;

    const listaCorreos = correos.split(',').map(c => c.trim());
    listaCorreos.forEach(email => {
      MailApp.sendEmail({
        to: email,
        subject: asunto,
        htmlBody: cuerpo
      });
    });
  }
}